--select处理可变参数

print("a","b","c",nil,false)

--select select(n,...)获取到的是可变参数的一部分 从第n个位置开始 select("#",...)获取的是长度
function func(...)
    print(select(1,...))
    print(select(2,...))
    print(select(3,...))
    print(select("#",...))
end

--func(1,2,3,4)
func(1,2,3)

function func1()
    return 4,5,6
end
print("func1",(func1()))

--()包住select方法得到第一个参数
function func(...)
    print((select(1,...)))
    print((select(2,...)))
    print((select(3,...)))
    print((select(4,...)))
    print((select(5,...)))
    print(select("#",...))
end
func(1,2,3,4,5)

--任意参数求和
function func(...)
    local sum=0
    local count=select("#",...)
    for i = 1, count do
        print((select(i,...)))
        sum=sum+(select(i,...))
    end
    return sum
end
print("获取每个参数，并求和")
print(func(2,3,4,5))

--unpack
t={1,2,3}
a,b,c=unpack(t)
print("a,b,c",a,b,c)

a=unpack(t,1,1)
print("a",a)

b,c=unpack(t,2,3)
print("b,c",b,c)

----pack处理可变参 理解为多参数打包 多了属性 n 代表参数个数 5.1不支持
--print("pack打包参数")
--function func(...)
--    local t=table.pack(...)
--    print("参数个数",t.n,t["n"])
--end
--
--func(1,2,3)
--
----unpack 5.1不支持
--t={1,2,3}
--a,b,c=table.unpack(t) --1,2,3
